package it.unipg.bipod.web;

import it.unipg.bipod.applicationLogic.*;
import it.unipg.bipod.dataModel.*;

/**
 * SegretarioBean raccoglie i bean che gestiscono le operazioni della segreteria.<br>
 * Fornisce accesso alle proprieta' bandiBean, corsiBean e docentiBean:
 * i Bean che gestiscono rispettivamente bandi, i corsi ed i dati dei docenti.
 * SegretarioBean inoltre espone un oggetto Segretario con i dati del segretario
 * ed un oggetto Registrazione con i dati della sua registrazione.<br>
 * Eventuali messaggi o errori vengono segnalati mediante i metodi forniti da DefaultBean.
 * 
 * @author Lorenzo Porzi
 * @see DefaultBean
 * @see SegretarioBandiBean
 * @see SegretarioCorsiBean
 * @see SegretarioDocentiBean
 */
public class SegretarioBean extends DefaultBean {
	private Segretario segretario;
	private Registrazione registrazione;
	
	// Bean secondari
	private SegretarioBandiBean bandiBean;
	private SegretarioCorsiBean corsiBean;
	private SegretarioDocentiBean docentiBean;
	private SegretarioOperazioniBean operazioniBean;
	private SegretarioSegretariBean segretariBean;
	private MessageBean messageBean;

	/**
	 * Costruisce un SegretarioBean associato alla SegretarioApplication fornita.
	 * 
	 * @param application la SegretarioApplication da associare a questo SegretarioBean.
	 */
	public SegretarioBean(SegretarioApplication application) {
		super();
		
		this.segretario = application.getSegretario();
		this.registrazione = application.getRegistrazione();
		
		// Sotto-bean
		this.bandiBean = new SegretarioBandiBean(application);
		this.corsiBean = new SegretarioCorsiBean(application);
		this.docentiBean = new SegretarioDocentiBean(application);
		this.operazioniBean = new SegretarioOperazioniBean(application);
		this.segretariBean = new SegretarioSegretariBean(application);
		this.messageBean = new MessageBean(application);
	}
	
	/* ------------------------
	 * Getters per le proprietà
	 * ------------------------ */
	
	public Segretario getSegretario() {
		return this.segretario;
	}
	
	public Registrazione getRegistrazione() {
		return this.registrazione;
	}
	
	/* ----------------------------
	 * Getters per i Bean secondari
	 * ---------------------------- */
	
	public SegretarioBandiBean getBandiBean() {
		return bandiBean;
	}
	
	public SegretarioCorsiBean getCorsiBean() {
		return corsiBean;
	}
	
	public SegretarioDocentiBean getDocentiBean() {
		return docentiBean;
	}
	
	public SegretarioOperazioniBean getOperazioniBean() {
		return operazioniBean;
	}
	
	public SegretarioSegretariBean getSegretariBean() {
		return segretariBean;
	}
	
	public MessageBean getMessageBean() {
		return messageBean;
	}
}
